package validadores;

import java.util.Locale;
import java.util.ResourceBundle;

import javax.faces.application.Application;
import javax.faces.application.FacesMessage;
import javax.faces.component.UIComponent;
import javax.faces.context.FacesContext;
import javax.faces.validator.Validator;
import javax.faces.validator.ValidatorException;

import model.Curso;
import model.Turma;
import model.Usuario;
import dao.DAOCurso;
import dao.DAOTurma;
import dao.DAOUsuario;

public class ChaveValidator implements Validator{

	@Override
	public void validate(FacesContext fc, UIComponent uic, Object val)
			throws ValidatorException {
		DAOUsuario daouser = new DAOUsuario();
		DAOTurma daotur = new DAOTurma();
		DAOCurso daocu = new DAOCurso();
		String tipo = (String) uic.getAttributes().get("tipo");
		Locale locale = fc.getViewRoot().getLocale();  
        Application app = fc.getApplication();          
        ResourceBundle bundle = ResourceBundle.getBundle(   
        		app.getMessageBundle(), locale);        
		FacesMessage fm = null;
		String msg = null;
		if(tipo.equals("Usuario")){
			String chave = (String) val;
			Usuario u = daouser.findByLogin(chave);
			if(u != null){
				msg = bundle.getString("erro_chave_user");
				fm = new FacesMessage(msg);
				throw new ValidatorException(fm);
			}
		}
		else if (tipo.equals("Curso")){
			String chave = (String) val;
			Curso c = daocu.find(chave);
			if(c != null){
				msg = bundle.getString("erro_chave_curso");
				fm = new FacesMessage(msg);
				throw new ValidatorException(fm);			
			}
		}
		else if (tipo.equals("Turma")){
			int chave = (Integer) val;
			Turma t = daotur.find(chave);
			if(t != null){
				msg = bundle.getString("erro_chave_turma");
				fm = new FacesMessage(msg);
				throw new ValidatorException(fm);
			}
		}
	}
	
}
